#include <stdio.h>
#include <unistd.h>
#include "nivel2.h"
#define MAX 128

int notify(int size, const BYTE *msg){
  printf("MENSAJE!!");
  fflush(stdout);
  while(1) {}
}

int main(void)
{
	BYTE dst[ETH_ALEN]={0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
	int size;
	size_t timeout=20e3;
	BYTE buff[MAX];
	short end=0;
	int i;
	
	printf("Programa chorra de prueba-Envio\n");

	if(IniciarNivel2(notify)!=ETH_OK){
		printf("FALLO en INICIAR\n");
		return 1;
	}
	
	/*
	if(ObtenerDirDestino(dst)!=ETH_OK){
		printf("Error al obtener la direccion de destino\n");
		FinalizarNivel2();
		return 1;
	}
	*/

	if(AceptarConexion(dst, timeout)!=ETH_OK){
		printf("FALLO en ACEPTAR CONEXION\n");
		FinalizarNivel2();		
		return 1;
	}

	printf("Conectado");
	fflush(stdout);

	while(!end){
	  printf("LOL");
		size=RecibirDatos(buff, timeout);
		if(size==ETH_ERROR){
			printf("FALLO en RECIBIR\n");
			Desconectar();
			if(FinalizarNivel2()!=ETH_OK){
				printf("FALLO en FINALIZAR NIVEL 2\n");
			}
	
			return 1;
		}else if(size==ETH_TIMEOUT){
			printf("TIMEOUT en RECIBIR\n");
			Desconectar();
			if(FinalizarNivel2()!=ETH_OK){
				printf("FALLO en FINALIZAR NIVEL 2\n");
			}
	
			return 1;
		}else if(size==0){
			printf("FIN DE RECEPCION\n");
			end=1;
		}else{
			printf("\n\n\nINFORMACION: Tamanno=%d - %s\n\n\n",size, (char *)buff);
		}
	}
	
	sleep(1);
	
	if(FinalizarNivel2()!=ETH_OK){
		printf("FALLO en FINALIZAR NIVEL 2\n");
	}
	
	return 0;
}
